﻿using UnityEditor;

namespace UnityGameFramework.Editor.ResourceTools
{
    public interface IResourceBuilderControllerInfo
    {
        /// <summary>
        /// 产品名称
        /// </summary>
        string ProductName { get; }

        /// <summary>
        /// 公司名称
        /// </summary>
        string CompanyName { get; }

        /// <summary>
        /// 游戏识别号
        /// </summary>
        string GameIdentifier { get; }

        /// <summary>
        /// 游戏框架版本
        /// </summary>
        string GameFrameworkVersion { get; }

        /// <summary>
        /// Unity 版本
        /// </summary>
        string UnityVersion { get; }

        /// <summary>
        /// 适用游戏版本
        /// </summary>
        string ApplicableGameVersion { get; }

        /// <summary>
        /// 内部游戏版本
        /// </summary>
        int InternalGameVersion { get; }

        /// <summary>
        /// 内部资源版本
        /// </summary>
        int InternalResourceVersion { get; }

        /// <summary>
        /// 获取生成选项
        /// </summary>
        /// <returns></returns>
        BuildAssetBundleOptions GetBuildAssetBundleOptions();
        
        /// <summary>
        /// 当前平台
        /// </summary>
        Platform SelectedPlatform { get; }

        /// <summary>
        /// 是否压缩
        /// </summary>
        bool ZipSelected { get; }

        /// <summary>
        /// 生成目录
        /// </summary>
        string OutputDirectory { get; }

        /// <summary>
        /// 生成时的工作路径
        /// </summary>
        string WorkingPath { get; }

        /// <summary>
        /// 为可更新模式生成的远程文件存放于此路径。若游戏是网络游戏，生成结束后应将此目录上传至 Web 服务器，供玩家下载用。
        /// </summary>
        string OutputFullPath { get; }

        /// <summary>
        /// 为单机模式生成的文件存放于此路径。若游戏是单机游戏，生成结束后将此目录中对应平台的文件拷贝至 StreamingAssets 后打包 App 即可。
        /// </summary>
        string OutputPackagePath { get; }

        /// <summary>
        /// 为可更新模式生成的本地文件存放于此路径。若游戏是网络游戏，生成结束后将此目录中对应平台的文件拷贝至 StreamingAssets 后打包 App 即可。
        /// </summary>
        string OutputPackedPath { get; }

        /// <summary>
        /// 为可更新模式生成的本地文件存放于此路径。若游戏是网络游戏，生成结束后将此目录中对应平台的文件拷贝至 StreamingAssets 后打包 App 即可。
        /// </summary>
        string OutputPurePath { get; }

        /// <summary>
        /// 生成报告路径
        /// </summary>
        string BuildReportPath { get; }

        /// <summary>
        /// 是否生成单机模式所需的文件
        /// </summary>
        bool OutputPackageSelected { get; }

        /// <summary>
        /// 是否生成可更新模式所需的远程文件
        /// </summary>
        bool OutputFullSelected { get; }

        /// <summary>
        /// 是否生成可更新模式所需的本地文件
        /// </summary>
        bool OutputPackedSelected { get; }

        /// <summary>
        /// 是否生成可更新模式所需的本地文件
        /// </summary>
        bool OutputPureSelected { get; }

    }
}
